//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//

package com.wechat.pay.java.service.partnerpayments.wxcodepay.model;

import com.google.gson.annotations.SerializedName;
import com.wechat.pay.java.core.util.StringUtil;
import com.wechat.pay.java.service.partnerpayments.model.PromotionDetail;
import com.wechat.pay.java.service.partnerpayments.model.TransactionAmount;
import com.wechat.pay.java.service.partnerpayments.model.TransactionPayer;

import java.util.List;

public class PrepayResponse {
    @SerializedName("amount")
    private TransactionAmount amount;
    @SerializedName("sp_appid")
    private String spAppid;
    @SerializedName("sub_appid")
    private String subAppid;
    @SerializedName("sp_mchid")
    private String spMchid;
    @SerializedName("sub_mchid")
    private String subMchid;
    @SerializedName("attach")
    private String attach;
    @SerializedName("bank_type")
    private String bankType;
    @SerializedName("out_trade_no")
    private String outTradeNo;
    @SerializedName("payer")
    private TransactionPayer payer;
    @SerializedName("promotion_detail")
    private List<PromotionDetail> promotionDetail;
    @SerializedName("success_time")
    private String successTime;
    @SerializedName("trade_state")
    private PrepayResponse.TradeStateEnum tradeState;
    @SerializedName("trade_state_desc")
    private String tradeStateDesc;
    @SerializedName("trade_type")
    private PrepayResponse.TradeTypeEnum tradeType;
    @SerializedName("transaction_id")
    private String transactionId;

    public PrepayResponse() {
    }

    public TransactionAmount getAmount() {
        return this.amount;
    }

    public void setAmount(TransactionAmount amount) {
        this.amount = amount;
    }

    public String getSpAppid() {
        return this.spAppid;
    }

    public void setSpAppid(String spAppid) {
        this.spAppid = spAppid;
    }

    public String getSubAppid() {
        return this.subAppid;
    }

    public void setSubAppid(String subAppid) {
        this.subAppid = subAppid;
    }

    public String getSpMchid() {
        return this.spMchid;
    }

    public void setSpMchid(String spMchid) {
        this.spMchid = spMchid;
    }

    public String getSubMchid() {
        return this.subMchid;
    }

    public void setSubMchid(String subMchid) {
        this.subMchid = subMchid;
    }

    public String getAttach() {
        return this.attach;
    }

    public void setAttach(String attach) {
        this.attach = attach;
    }

    public String getBankType() {
        return this.bankType;
    }

    public void setBankType(String bankType) {
        this.bankType = bankType;
    }

    public String getOutTradeNo() {
        return this.outTradeNo;
    }

    public void setOutTradeNo(String outTradeNo) {
        this.outTradeNo = outTradeNo;
    }

    public TransactionPayer getPayer() {
        return this.payer;
    }

    public void setPayer(TransactionPayer payer) {
        this.payer = payer;
    }

    public List<PromotionDetail> getPromotionDetail() {
        return this.promotionDetail;
    }

    public void setPromotionDetail(List<PromotionDetail> promotionDetail) {
        this.promotionDetail = promotionDetail;
    }

    public String getSuccessTime() {
        return this.successTime;
    }

    public void setSuccessTime(String successTime) {
        this.successTime = successTime;
    }

    public PrepayResponse.TradeStateEnum getTradeState() {
        return this.tradeState;
    }

    public void setTradeState(PrepayResponse.TradeStateEnum tradeState) {
        this.tradeState = tradeState;
    }

    public String getTradeStateDesc() {
        return this.tradeStateDesc;
    }

    public void setTradeStateDesc(String tradeStateDesc) {
        this.tradeStateDesc = tradeStateDesc;
    }

    public PrepayResponse.TradeTypeEnum getTradeType() {
        return this.tradeType;
    }

    public void setTradeType(PrepayResponse.TradeTypeEnum tradeType) {
        this.tradeType = tradeType;
    }

    public String getTransactionId() {
        return this.transactionId;
    }

    public void setTransactionId(String transactionId) {
        this.transactionId = transactionId;
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append("class Transaction {\n");
        sb.append("    amount: ").append(StringUtil.toIndentedString(this.amount)).append("\n");
        sb.append("    spAppid: ").append(StringUtil.toIndentedString(this.spAppid)).append("\n");
        sb.append("    subAppid: ").append(StringUtil.toIndentedString(this.subAppid)).append("\n");
        sb.append("    spMchid: ").append(StringUtil.toIndentedString(this.spMchid)).append("\n");
        sb.append("    subMchid: ").append(StringUtil.toIndentedString(this.subMchid)).append("\n");
        sb.append("    attach: ").append(StringUtil.toIndentedString(this.attach)).append("\n");
        sb.append("    bankType: ").append(StringUtil.toIndentedString(this.bankType)).append("\n");
        sb.append("    outTradeNo: ").append(StringUtil.toIndentedString(this.outTradeNo)).append("\n");
        sb.append("    payer: ").append(StringUtil.toIndentedString(this.payer)).append("\n");
        sb.append("    promotionDetail: ").append(StringUtil.toIndentedString(this.promotionDetail)).append("\n");
        sb.append("    successTime: ").append(StringUtil.toIndentedString(this.successTime)).append("\n");
        sb.append("    tradeState: ").append(StringUtil.toIndentedString(this.tradeState)).append("\n");
        sb.append("    tradeStateDesc: ").append(StringUtil.toIndentedString(this.tradeStateDesc)).append("\n");
        sb.append("    tradeType: ").append(StringUtil.toIndentedString(this.tradeType)).append("\n");
        sb.append("    transactionId: ").append(StringUtil.toIndentedString(this.transactionId)).append("\n");
        sb.append("}");
        return sb.toString();
    }

    public static enum TradeTypeEnum {
        @SerializedName("JSAPI")
        JSAPI,
        @SerializedName("NATIVE")
        NATIVE,
        @SerializedName("APP")
        APP,
        @SerializedName("MICROPAY")
        MICROPAY,
        @SerializedName("MWEB")
        MWEB,
        @SerializedName("FACEPAY")
        FACEPAY;

        private TradeTypeEnum() {
        }
    }

    public static enum TradeStateEnum {
        @SerializedName("SUCCESS")
        SUCCESS,
        @SerializedName("REFUND")
        REFUND,
        @SerializedName("NOTPAY")
        NOTPAY,
        @SerializedName("CLOSED")
        CLOSED,
        @SerializedName("REVOKED")
        REVOKED,
        @SerializedName("USERPAYING")
        USERPAYING,
        @SerializedName("PAYERROR")
        PAYERROR,
        @SerializedName("ACCEPT")
        ACCEPT;

        private TradeStateEnum() {
        }
    }
}
